From 507292dfde002d9d58c36034427feb8df2f421e1 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Fr=C3=A9d=C3=A9ric=20Giquel?= Date: Wed, 18 Aug 2021 10:17:28 +0200 Subject: [PATCH] Add option (default off) to restore window configuration --- which-key.el | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/which-key.el b/which-key.el index 061afee73b8..6bbe2922bea 100644 --- a/which-key.el +++ b/which-key.el @@ -407,6 +407,15 @@ Note that `which-key-idle-delay' should be set before turning on :group 'which-key :type 'boolean) +(defcustom which-key-preserve-window-configuration nil + "If non-nil, save window configuration before which-key buffer is shown +and restore it after which-key buffer is hidden. It prevents which-key from +changing window position of visible buffers. +Only takken into account when popup type is side-window." + :group + 'which-key + :type 'boolean) + (defvar which-key-C-h-map (let ((map (make-sparse-keymap))) (dolist (bind `(("\C-a" . which-key-abort) @@ -1099,7 +1108,8 @@ total height." ;; in case which-key buffer was shown in an existing window, `quit-window' ;; will re-show the previous buffer, instead of closing the window (quit-windows-on which-key--buffer) - (when which-key--saved-window-configuration + (when (and which-key-preserve-window-configuration + which-key--saved-window-configuration) (set-window-configuration which-key--saved-window-configuration) (setq which-key--saved-window-configuration nil)))) @@ -1140,7 +1150,8 @@ call signature in different emacs versions" (defun which-key--show-buffer-side-window (act-popup-dim) "Show which-key buffer when popup type is side-window." - (unless which-key--saved-window-configuration + (when (and which-key-preserve-window-configuration + (not which-key--saved-window-configuration)) (setq which-key--saved-window-configuration (current-window-configuration))) (let* ((height (car act-popup-dim)) (width (cdr act-popup-dim)) -- 2.30.2